Eine häufige Aufgabe beim Abrufen von Daten aus einer Datenbank besteht darin, einen von einer Abfrage ausgegebenen Satz von Werten als kommagetrennte Liste zu formatieren. Fast ebenso häufig ist genau die entgegengesetzte Aufgabe – eine kommagetrennte Liste von Werten in einem einzelnen String als Tabelle von Werten zu benutzen.
Viele Scriptsprachen wie Perl und Python bieten Funktionen, die mit ihren sprachspezifischen Listen von Werten genau dies machen. Es überrascht daher, dass diese Funktionalität bislang nicht standardmäßig in den SQL-Funktionen enthalten ist. Es gibt zwar ziemlich hässliche Hilfskonstruktionen, die komplexe Deklarationen mit MAX und DECODE enthalten, doch liefern solche Lösungen normalerweise nur einen begrenzten Satz von Werten. Mit einigen der neuen Features von Oracle9i und neueren Versionen kann man diese Funktionen selbst erstellen.
Hier soll eine „join“-Funktion verwendet werden, um eine Abfrage zu erstellen, die eine einzelne Spalte und ein Trennzeichen ausgibt, worauf ein einfacher String entsteht, der eine Liste der entsprechenden Werte, vom Trennzeichen getrennt, enthält. Die Abfrage kann der Funktion als REF CURSOR unter Verwendung der neuen SQL CURSOR-Funktion übergeben werden. Das Trennzeichen sollte standardmäßig ein Komma sein, da dies das am häufigsten verwendete Trennzeichen ist. Die Syntax sollte also wie folgt aussehen:
Realisiert wird diese Funktion mithilfe des folgenden Codes:
Neueste Kommentare
Noch keine Kommentare zu Join- und split-Funktionen mit SQL
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.